﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace GUI.LoaiHangHoa
{
    public partial class frmXuLy : Form
    {
        #region Delegate
        public delegate void GetString(Boolean capnhat);
        public GetString GetData;
        public static bool CheckClose = false;
        bool check = false;
        #endregion

        #region khởi tạo
        private DateTime date;
        private string hanhDong;
        private string MaLoaiHang = string.Empty;
        public string HanhDong
        {
            get { return hanhDong; }
            set { hanhDong = value; }
        }
        private Entities.LoaiHang nhanvien;
        public Entities.LoaiHang Nhanvien
        {
            get { return nhanvien; }
            set { nhanvien = value; }
        }
        public frmXuLy()
        {
            InitializeComponent();
        }
        public frmXuLy(string hanhDong, Entities.LoaiHang nhanvien)
        {
            InitializeComponent();
            this.hanhDong = hanhDong;
            this.nhanvien = nhanvien;
        }
        #endregion

        #region phân quyền
        private Boolean Quyen()
        {
            return true;
        }
        #endregion

        #region kiểm tra
        private bool Kiemtra()
        {
            try
            {
                if (txtTenLoaiHangHoa.Text.Length == 0)
                {
                    MessageBox.Show("Bạn cần phải nhập " + lblTenLoaiHangHoa.Text, "Hệ thống cảnh báo");
                    txtTenLoaiHangHoa.Focus();
                    return false;
                }
            }
            catch
            {
            }
            return true;
        }
        #endregion

        #region Đổ dữ liệu
        private void DoDuLieu()
        {
            try
            {
                MaLoaiHang = nhanvien.MaLoaiHang;
                txtTenLoaiHangHoa.Text = nhanvien.TenLoaiHang;
                txtghichu.Text = nhanvien.GhiChu;
            }
            catch (Exception ex)
            {
                string s = ex.Message;
            }
        }
        #endregion

        #region lấy bản ghi
        private Entities.LoaiHang LayBanGhi(string hanhdong)
        {
            Entities.LoaiHang nv = new Entities.LoaiHang();
            try
            {
                nv.HanhDong = hanhdong;
                nv.MaLoaiHang = MaLoaiHang;
                nv.TenLoaiHang = txtTenLoaiHangHoa.Text.Trim();
                nv.GhiChu = txtghichu.Text;
                nv.Deleted = false;
            }
            catch (Exception ex)
            {
                string s = ex.Message;
                nv = null;
            }
            return nv;
        }
        #endregion

        #region lấy ID
        // xử lý ID
        private string GetID()
        {
            string code = string.Empty;
            try
            {
                Entities.GetID id = new Entities.GetID();
                id.TableName = "LoaiHang";
                Entities.GetID get = Common.StaticVariable.InterfaceObject.SelectID(id);
                if (get.ColumnName != null)
                {
                    code = Common.Utilities.ProcessID(get.ColumnName);
                }
                else
                { code = "LH_0001"; }
            }
            catch (Exception ex)
            {
                string s = ex.Message;
                code = "LH_0001";
            }
            return code;
        }
        #endregion

        #region thêm
        private void Them()
        {
            try
            {
                if (this.Quyen() != true)
                {
                    MessageBox.Show("Bạn không có quyền thêm", "Thông báo");
                    return;
                }
                Entities.LoaiHang nv = this.LayBanGhi("Insert");
                this.MaLoaiHang = this.GetID();
                if (nv.MaLoaiHang != this.MaLoaiHang)
                {
                    nv = this.LayBanGhi("Insert");
                }
                if (this.Validate() == false)
                {
                    return;
                }
                int k = Common.StaticVariable.InterfaceObject.InsertUpdateLoaiHang(nv);
                if (k == 0)
                {
                    MessageBox.Show("Thất bại hãy liện hệ với nhà quản trị", "Thông báo");
                    return;
                }
                CheckClose = true;
                GetData(true);
                this.Close();
            }
            catch (Exception ex)
            {
                string s = ex.Message;
            }
        }
        #endregion

        #region sửa
        private void Sua()
        {
            try
            {
                if (this.Quyen() != true)
                {
                    MessageBox.Show("Bạn không có quyền sửa", "Thông báo");
                    return;
                }
                Entities.LoaiHang nv = this.LayBanGhi("Update");
                if (this.Kiemtra() == false)
                {
                    return;
                }
                int k = Common.StaticVariable.InterfaceObject.InsertUpdateLoaiHang(nv);
                if (k == 0)
                {
                    MessageBox.Show("Thất bại hãy liện hệ với nhà quản trị", "Thông báo");
                    return;
                }
                CheckClose = false;
                GetData(true);
                this.Close();
            }
            catch (Exception ex)
            {
                string s = ex.Message;
            }
        }
        #endregion

        #region Check Conflic Insert
        string maLoaiHangmoi;
        public bool CheckConflicInsert(Entities.LoaiHang LoaiHang)
        {
            maLoaiHangmoi = GetID();
            if (LoaiHang.MaLoaiHang == maLoaiHangmoi)
            {
                return true;
            }
            return false;
        }
        #endregion

        #region sự kiện form
        private void frmXuLy_Load(object sender, EventArgs e)
        {
            this.WindowState = FormWindowState.Normal;
            try
            {
                date = Common.StaticVariable.InterfaceObject.SelectDate();
                switch (this.hanhDong)
                {
                    case "Them":
                        MaLoaiHang = this.GetID();
                        break;
                    case "Sua":
                        DoDuLieu();
                        break;
                    default:
                        this.Thoat();
                        break;
                }
                this.WindowState = FormWindowState.Normal;
                txtTenLoaiHangHoa.Focus();
            }
            catch (Exception ex)
            {
                string s = ex.Message;
            }
        }
        private void txttendonvitinh_KeyPress(object sender, KeyPressEventArgs e)
        {
            Common.ValidateControl.CheckNumber(e);
        }

        private void btnThoat_Click(object sender, EventArgs e)
        {
            Thoat();
        }

        private void btnGhiLai_Click(object sender, EventArgs e)
        {
            try
            {
                switch (this.hanhDong)
                {
                    case "Them":
                        this.Them();
                        break;
                    case "Sua":
                        this.Sua();
                        break;
                }
            }
            catch (Exception)
            {

            }
        }
        #endregion

        #region Thoát
        private void Thoat()
        {
            try
            {
                System.Windows.Forms.DialogResult ketqua = System.Windows.Forms.MessageBox.Show("Bạn có chắc chắn muốn thoát không ?", "Thông báo", System.Windows.Forms.MessageBoxButtons.YesNo);
                {
                    if (ketqua == System.Windows.Forms.DialogResult.Yes)
                    {
                        CheckClose = true;
                        GetData(false);
                        this.Close();
                    }
                }
            }
            catch (Exception)
            { }
        }
        #endregion
    }
}
